Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.02.2009, 09:39
Аватар для demi
Кандидат Javascript-наук
Отправить личное сообщение для demi Посмотреть профиль Найти все сообщения от demi
 
Регистрация: 30.11.2008
Сообщений: 122

здравствуйте


подскажите если я на страницу подгражаю какой-то html как responseText.
как сделать чтоб загруженный вместе с html javascript функции выполнялись.

отдельно загружать js не получиться так как он формируется внутри подгружаемого документа.

Последний раз редактировалось Андрей Параничев, 12.02.2009 в 16:05.
Ответить с цитированием
  #2 (permalink)  
Старый 12.02.2009, 12:25
Аватар для demi
Кандидат Javascript-наук
Отправить личное сообщение для demi Посмотреть профиль Найти все сообщения от demi
 
Регистрация: 30.11.2008
Сообщений: 122

прочитал про eval здесь на форуме
но мочему-то у меня всеравно не выполняется функция.

alert (extractScripts ( responseText ));
	 eval ( extractScripts ( responseText ) );


вырезаемая функция вот:
<script>
	function abc () {
		alert ("sdfasdf");
	}
</script>

почемуто ее после eval не видит
хотя вырезает нормально

просто alert ();
он выводит а функцию не хочит

мне необходимо чтоб функции и переменные загрузились.

Последний раз редактировалось Андрей Параничев, 12.02.2009 в 16:06.
Ответить с цитированием
  #3 (permalink)  
Старый 12.02.2009, 16:07
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

demi,
Вы функцию extractScripts себе в код скопировали?
Ответить с цитированием
  #4 (permalink)  
Старый 13.02.2009, 03:57
Аватар для demi
Кандидат Javascript-наук
Отправить личное сообщение для demi Посмотреть профиль Найти все сообщения от demi
 
Регистрация: 30.11.2008
Сообщений: 122

да
Ответить с цитированием
  #5 (permalink)  
Старый 13.02.2009, 04:27
Аватар для demi
Кандидат Javascript-наук
Отправить личное сообщение для demi Посмотреть профиль Найти все сообщения от demi
 
Регистрация: 30.11.2008
Сообщений: 122

В общем если делаю так то не работает:
var responseScript = (extractScripts ( responseText ));
var myeval = ( window.execScript )? window.execScript( responseScript ): window.eval( responseScript );


Если так то все работает
var i = ( 'function abc1 () {alert ("sdfasdf");}' );
var myeval1 = ( window.execScript )? window.execScript( i ): window.eval( i );


не понимаю в чем разница, грузится она и та же функция.
Подскажите может я что-то упустил?
Ответить с цитированием
  #6 (permalink)  
Старый 13.02.2009, 04:28
Аватар для demi
Кандидат Javascript-наук
Отправить личное сообщение для demi Посмотреть профиль Найти все сообщения от demi
 
Регистрация: 30.11.2008
Сообщений: 122

12
Ответить с цитированием
  #7 (permalink)  
Старый 13.02.2009, 04:51
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

Из какой темы взят extractScripts?

Не оставляйте несколько сообщений подряд, редактируйте предыдущие, если вам есть, что добавить.
Ответить с цитированием
  #8 (permalink)  
Старый 13.02.2009, 05:04
Аватар для demi
Кандидат Javascript-наук
Отправить личное сообщение для demi Посмотреть профиль Найти все сообщения от demi
 
Регистрация: 30.11.2008
Сообщений: 122

тему не помню, вот сама функция:
function extractScripts(str) {
  var results = [];
  var scriptFragment = '(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)';
  var matches = str.match(new RegExp(scriptFragment, 'img'));
  if (matches) {
    var oneScriptPattern = new RegExp(scriptFragment, 'im');
    for (var i = 0; i < matches.length; i++)
      results.push((matches[i].match(oneScriptPattern) || ['', ''])[1]);
  }
  return results;
}
Ответить с цитированием
  #9 (permalink)  
Старый 13.02.2009, 05:08
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

demi,
Вы не заметили, что результат этой функции - массив исходных кодов?

Сделайте проще (чтоб два раза не обходить массив), пусть выполняется сразу в функции:
function evalScripts(str) {
  var scriptFragment = '(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)';
  var matches = str.match(new RegExp(scriptFragment, 'img'));
  if (matches) {
    var oneScriptPattern = new RegExp(scriptFragment, 'im');
    for (var i = 0; i < matches.length; i++)
      eval((matches[i].match(oneScriptPattern) || ['', ''])[1]);
  }
  return true;
}
Ответить с цитированием
  #10 (permalink)  
Старый 13.02.2009, 05:10
Аватар для demi
Кандидат Javascript-наук
Отправить личное сообщение для demi Посмотреть профиль Найти все сообщения от demi
 
Регистрация: 30.11.2008
Сообщений: 122

чесно говоря не обратил внимания , просто вствил
и алертом результат проверил.



спасибо проверил помогло

Последний раз редактировалось demi, 13.02.2009 в 05:21.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Игра на яваскрипт + Бесплатные скрипты alien777 Ваши сайты и скрипты 1 05.10.2009 22:34
Конфликтуют скрипты openID и скрипт шаблона abix Элементы интерфейса 2 11.01.2009 21:47
загруженные картинки исчезают из кэша alexei_lk Элементы интерфейса 2 27.12.2008 22:50
Скрипты google Snipe AJAX и COMET 13 03.11.2008 09:46
Новый раздел - Скрипты Илья Кантор Сайт Javascript.ru 3 10.03.2008 21:30